#ifndef _MY_HEAD_H
#define _MY_HEAD_H
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <unistd.h>

typedef struct //账号结构体类型
{
    int permission;//权限
    int id;//账号
    char password[20];//密码
}account;
typedef struct //用户信息结构体类型
{
    account user_account;//用户账号信息
    char user_name[20];//用户名
    char user_role[20];//用户角色
}user;
typedef struct user_node//管理用户链表节点信息
{
    user data;
    struct user_node*next;
}user_node ,*p_user_node;

typedef struct  //航班信息结构体类型
{
    char flight_Number[20];     // 航班号
    char aircraft_Model[20];    // 机型
    char departure_Time[20];    // 预计起飞时间
    char arrival_Time[20];      // 预计降落时间
    char flight_Schedule[20];   // 班期
    char departure_Airport[20]; // 起飞机场
    char arrival_Airport[20];   // 目的机场
} flight;
typedef struct node //航班信息链表节点
{
    flight data;
    struct node * next;
}flight_node,*p_flight_node;

typedef struct order//管理预订航班链表节点信息
{
    flight data;
    struct order * next;
}order_node,*p_order_node;


//注册
bool Register(p_user_node head,int * n);
//登录
bool Login(p_user_node head,int* a,char *p);
//航班链表头结点初始化
bool Initnode(p_flight_node * head);
//插入
bool Insertnode(p_flight_node head);
//显示
bool Shownode(p_flight_node head);
//修改
bool Modifynode(p_flight_node head);
//查询
bool Searchnode(p_flight_node head);
//删除
bool Deletenode(p_flight_node head);
//销毁
void Destorynode(p_flight_node * head);

//用户链表头结点初始化
bool UserInit(p_user_node *head);
//用户链表插入
bool UserInsert(p_user_node head);
//用户链表显示
bool UserShow(p_user_node head);
//用户链表查询
bool UserSearch(p_user_node head);
//用户链表修改
bool UserModify(p_user_node head);
//用户链表删除
bool UserDelete(p_user_node head);
//用户链表销毁
void UserDestory(p_user_node * head);

//用户个人信息修改
bool modify_information(p_user_node head,int *b,char *p);
//查看用户个人信息
bool show_information(p_user_node head,int *b,char *p);

//管理订单链表节点初始化
bool Order_Init(p_order_node *head);
//预订航班
bool Order_Flight(p_order_node  head,p_flight_node head2);
//查询预订记录
bool Order_Show(p_order_node head);
//取消预订
bool Order_Delete(p_order_node head);
//订单链表节点销毁
void Order_Destory(p_order_node * head);

#endif